home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
fish
/
001-100
/
001-025
/
013
/
algebra.bas
< prev
next >
Wrap
BASIC Source File
|
1995-03-17
|
5KB
|
136 lines
10 '*** ALGEBRA AND GEOMETRY PROGRAM
20 '** for the IBM PC...requires 32K and Color/Graphics
30 ON ERROR GOTO 1150
40 CLR
70 REM
80 SCREEN 1,2,0:WIDTH 80:SCNCLR : PRINT "ALGEBRA Graphics Program"
90 PRINT " Steve VanArsdale"
100 PRINT "Mt.Prospect, Illinois 312-259-7224"
110 PRINT
120 PRINT "SELECT algebra function:"
130 PRINT "A ... for the SINE of X"
140 PRINT "B ... for the COSINE of X"
150 PRINT "C ... for the TANGENT of X"
160 PRINT "D ... for the SECANT of X"
170 PRINT "E ... for the COTANGENT of X"
180 PRINT "F ... for the COSECANT of X"
190 PRINT "G ... for the INVERSE HYPERBOLIC SINE of X"
200 PRINT "H ... for the SQUARE ROOT of X"
210 PRINT " > ";:GETKEY CHOICE$
220 IF CHOICE$ <>"A" AND CHOICE$ <> "a" THEN 230
225 DEF FNFCTN(X)=SIN(X):FCTN$="SIN(X)":GOTO 310
230 ' IF CHOICE$ <>"B" OR CHOICE$ <> "b" THEN 240
235 ' DEF FNFCTN(X)=COS(X):FCTN$="COSINE(X)":GOTO 310
240 ' IF CHOICE$ <>"C" OR CHOICE$ <> "c" THEN 250
245 ' DEF FNFCTN(X)=TAN(X):FCTN$="TANGENT(X)":GOTO 310
250 ' IF CHOICE$ <>"D" OR CHOICE$ <> "d" THEN 260
255 ' DEF FNFCTN(X)=1/COS(X):FCTN$="SECANT(X)":GOTO 310
260 ' IF CHOICE$ <>"E" OR CHOICE$ <> "e" THEN 270
265 ' DEF FNFCTN(X)=1/TAN(X):FCTN$="COTANGENT(X)":GOTO 310
270 ' IF CHOICE$ <>"F" OR CHOICE$ <> "f" THEN 280
275 ' DEF FNFCTN(X)=1/SIN(X):FCTN$="COSECANT(X)":GOTO 310
280 ' IF CHOICE$ <>"G" OR CHOICE$ <> "g" THEN 290
285 ' DEF FNFCTN(X)=LOG(X+SQR(X*X+1)):FCTN$="INVERSE HYPERBOLIC SINE(X)":GOTO 310
290 ' IF CHOICE$ <>"H" OR CHOICE$ <>"h" THEN 300
295 ' DEF FNFCTN(X)=SQR(ABS(X)):FCTN$="SQ.RT(X)":GOTO 310
300 GOTO 70
310 PRINT "DEPTH OF ";FCTN$;" GRAPH (0 TO 50): ";:INPUT "",DEPTH
320 IF DEPTH < 0 OR DEPTH > 50 THEN GOTO 310
330 SCNCLR:SCREEN 0,2,0 :WIDTH 40
340 '**** GRAPHICS ROUTINE FOR ALGEBRAIC FUNCTIONS ****
350 SCNCLR
360 'SCREEN 1,0:COLOR 0,1
370 C=100:R=100
380 '** AXIS DRAWING ROUTINE
390 GOSUB 1180
400 '** PLOTTING PARAMETERS DISPLAY
410 PRINT AT(1,17); "GRAPH of:"
420 PRINT AT (1,18); FCTN$
430 PRINT AT (1,20); " X Y"
440 '** PLOTTING ROUTINE
450 X=0:Y=0:XX=-1:YY=FNFCTN(XX):DRAW (100,100)
460 FOR X = -1 TO 7 STEP .1
470 PRINT AT (1,21);:PRINT USING "##.##";X
480 REM
490 Y = FNFCTN(X)
500 YLIMIT=98-30*Y : DEPTHLIMIT=100-30*Y-DEPTH : IF YLIMIT < 0 OR YLIMIT > 200 OR DEPTHLIMIT < 0 THEN GOTO 570
510 ON ERROR GOTO 1270
520 PRINT AT (7,21);:PRINT USING "##.##";Y
530 DRAW (20*X+100,100-30*Y),2
540 IF DEPTH <> 0 THEN DRAW (20*X+101,99-30*Y TO 20*X+100+DEPTH,100-30*Y-DEPTH),1
550 DRAW (20*XX+100,100-30*YY TO 20*X+100,100-30*Y),2
560 IF DEPTH <> 0 THEN DRAW (20*XX+100+DEPTH,100-30*YY-DEPTH TO 20*X+100+DEPTH,100-30*Y-DEPTH),2
570 XX=X:YY=Y
580 NEXT X
590 GOSUB 1180
600 PRINT AT (1,23); "ENTER X TO EXIT";:VALUE$=INPUT$(1)
610 IF VALUE$ <> "X" AND VALUE$ <> "x" THEN GOTO 70 ELSE SCNCLR
620 '**** SPECIAL EXIT DISPLAY ****
630 '** AXIS DRAWING SUBROUTINE
640 GOSUB 1180
650 '** PLANE GRID DRAWING ROUTINE
660 FOR X = 10 TO R-10 STEP 10
670 DRAW (C+X,R-X TO 105+C+X,R-X),1
680 DRAW (C+X,R-X TO C+X,0),1
690 DRAW (C,R-X TO 195-X,5),1
700 DRAW (C+X,R TO 195+X,5),1
710 NEXT X
720 PRINT AT (22,1); " Z axis"
730 '** HOOP ROUTINE
740 CIRCLE (160,90),50,1
750 'FOR I = 1 TO 20 STEP
760 'CIRCLE STEP (1,-1),50,1
770 'NEXT I
780 'CIRCLE (160,90),50,1
790 '** ELLIPTICAL TUBE ROUTINE
800 'CIRCLE (155,90),25,1
810 'FOR I = 1 TO 35
820 'CIRCLE STEP (1,1),25,1
830 'NEXT I
840 'CIRCLE STEP (1,1),25,1
850 CIRCLE (155,90),25,.5
860 'FOR I = 1 TO 20
870 'CIRCLE STEP (1,-1),24,1,,,.5
880 'NEXT I
890 CIRCLE (155,90),25,.5
900 '*** CONE ROUTINE
910 CIRCLE (45,55),38,3
920 'FOR I = 1 TO 38
930 'CIRCLE STEP (+1,-1),38-I,(I MOD 2)+2,,,1
940 'NEXT I
950 CIRCLE (45,55),38,1
960 '** GLOBE ROUTINE
970 CIRCLE (245,170),1,2
980 'FOR I = 1 TO 10 STEP 1
990 'CIRCLE STEP (+I/4,-I/4),I*4,1,,,1
1000 'NEXT I
1010 'FOR I = 10 TO 0 STEP -1
1020 'CIRCLE STEP (+I/4,-I/4),I*4,2,,,1
1030 'NEXT I
1040 DRAW (TO 245,170),3
1050 '** PYRAMID ROUTINE
1060 'DRAW "BM10,150;C1;E30;F30;L60"
1070 'DRAW "BM+30,-28;D13"
1080 DRAW (40,135 TO 11,149),1
1090 DRAW (40,135 TO 69,149),1
1100 '** CUBE ROUTINE
1110 'DRAW "BM265,85;C3;U30;R30;D30;L30"
1120 'DRAW "BM+20,-20;C3;U30;R30;D30;L30"
1130 'DRAW "C3;G20;BM+30,0;E20;BM+0,-30;G20;BM-30,0;E20"
1140 PRINT AT (1,25); "BYE.";
1150 '**** TERMINATION LOGIC
1160 SCNCLR: PRINT "ALGEBRA Program Terminated."
1170 END
1180 '**** AXIS DRAWING SUBROUTINE ****
1190 '**** AXIS DRAWING SUBROUTINE ****
1200 DRAW (C,0 TO C,199),6
1210 DRAW (90,110 TO 200,0),6
1220 DRAW (0,R TO 319,R),6
1230 PRINT AT (1,13); "X axis"
1240 PRINT AT (10,2); "Y axis"
1250 PRINT AT (22,1); " Z axis"
1260 RETURN
1270 '**** CALCULATION ERROR HANDLER
1280 RESUME 390
1290 SCNCLR : PRINT "ALGEBRA Graphics Program"